﻿namespace ConsoleApp1.demo;

public class NumberManipulator
{
    public int FindMax(int num1, int num2){
        /* 局部变量声明 */
        int result;

        if (num1 > num2)
            result = num1;
        else
            result = num2;

        return result;
    }
    
    public static void RunMain(){
        /* 局部变量定义 */
        int a = 100;
        int b = 200;
        int ret;
        var n = new NumberManipulator();

        //调用 FindMax 方法
        ret = n.FindMax(a, b);
        Console.WriteLine("最大值是： {0}", ret );
        // Console.ReadLine();
    }
    
    public void Swap(ref int x, ref int y){
        int temp;
        temp = x; /* 保存 x 的值 */
        x = y;    /* 把 y 赋值给 x */
        y = temp; /* 把 temp 赋值给 y */
    }
    
    public static void RunMain2(){
        NumberManipulator n = new NumberManipulator();
        /* 局部变量定义 */
        int a = 100;
        int b = 200;

        Console.WriteLine("在交换之前，a 的值： {0}", a);
        Console.WriteLine("在交换之前，b 的值： {0}", b);

        /* 调用函数来交换值 */
        n.Swap(ref a, ref b);

        Console.WriteLine("在交换之后，a 的值： {0}", a);
        Console.WriteLine("在交换之后，b 的值： {0}", b);
 
        Console.ReadLine();
    }
    
    public void GetValue(out int x ){
        int temp = 5;
        x = temp;
    }

    public static void RunMain3()
    {
        // 输出传递参数，在两个返回值的情况下，比较方便
        
        NumberManipulator n = new NumberManipulator();
        /* 局部变量定义 */
        int a = 100;
         
        Console.WriteLine("在方法调用之前，a 的值： {0}", a);
         
        /* 调用函数来获取值 */
        n.GetValue(out a);

        Console.WriteLine("在方法调用之后，a 的值： {0}", a);
        // Console.ReadLine();
    }
}